package com.unipay.system.handler;

import com.unipay.common.result.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @BelongsProject: unipay-auth-parent
 * @Author: cmy
 * @CreateTime: 2023-02-03  16:37
 * @Description: TODO  创建：统一“异常处理器”
 */

/**
 * 全局异常处理类
 */
@ControllerAdvice
public class GlobalExceptionHandler {

    // 1、全局异常处理
    @ExceptionHandler(Exception.class)
    @ResponseBody   // ------没有的话，返回结果，不能转换为JSON------
    public Result error(Exception e){
        e.printStackTrace();
        return Result.fail().message("全局处理异常！！！");
    }

    // 2、特定异常处理
    @ResponseBody   // ------没有的话，返回结果，不能转换为JSON------
    @ExceptionHandler(ArithmeticException.class)
    public Result error(ArithmeticException e){
        e.printStackTrace();
        return Result.fail().message("特定处理异常！！！");
    }

    // TODO 3、自定义异常处理
    @ResponseBody   // ------没有的话，返回结果，不能转换为JSON------
    @ExceptionHandler(UnipayException.class)
    public Result error(UnipayException e){
        e.printStackTrace();
        return Result.fail().message(e.getMessage()).code(e.getCode());
    }
    /*
        UnipayException(code=222, message=自定义处理异常！！！)
	    at com.unipay.system.controller.SysRoleController.getAll(SysRoleController.java:127)
	    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        ......
     **/
}
